           package com.java.diagnostics.visualizer.displayer.plot;
           
           import com.java.diagnostics.visualizer.data.DataSet;
           import com.java.diagnostics.visualizer.data.axes.DataAxis;
           import com.java.diagnostics.visualizer.display.ZoomableDisplayer;
           import com.java.diagnostics.visualizer.impl.factory.LogFactory;
           import com.java.diagnostics.visualizer.properties.OutputProperties;
           import com.java.diagnostics.visualizer.properties.ZoomListener;
           import java.util.Iterator;
           import java.util.Map;
           import java.util.Set;
           import java.util.logging.Logger;
           import org.eclipse.swt.graphics.Point;
           
           public class ZoomingPlotDataDisplayer extends SWTPlotDataDisplayer
             implements ZoomableDisplayer, ZoomListener
           {
             private static final Logger TRACE = LogFactory.getTrace(ZoomingPlotDataDisplayer.class);
           
             protected void initialisePlot(DataSet dataSet, OutputProperties outputProperties)
             {
               super.initialisePlot(dataSet, outputProperties);
             }
           
             protected XPositionConverter createXPositionConverter() {
               return new ZoomingXPositionConverter(this.outputProperties);
             }
           
             protected YPositionConverter createYPositionConverter(boolean padPlots) {
               return new ZoomingYPositionConverter(padPlots, this.linePlotPreferencesHelper.getForceYAxisToStartAtZero(), this.outputProperties);
             }
           
             public double getXAsFraction(Point point)
             {
               return ((ZoomingXPositionConverter)this.xConverter).getAsZoomFraction(point.x);
             }
           
             public double getYAsFraction(Point point)
             {
               if (this.xAxis != null) {
                 Iterator iterator = this.converters.keySet().iterator();
                 if (iterator.hasNext()) {
                   DataAxis yAxis = (DataAxis)iterator.next();
           
                   ZoomingYPositionConverter converter = (ZoomingYPositionConverter)
                     ((PointConverter)this.converters.get(yAxis)).getYConverter();
                     
           
                   return converter.getAsZoomFraction(point.y);
                 }
               }
               return 0.0D;
             }
           
             public void zoomChanged()
             {
             }
           
             public double getPlotLeft()
             {
               return this.plotLeft;
             }
             public double getPlotRight() {
               return this.plotRight;
             }
             public double getPlotTop() {
               return this.plotTop;
             }
             public double getPlotBottom() {
               return this.plotBottom;
             }
           }

